Çàêðûòü îêíî
Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"
%PAGE
7. ÁAÇOBÛE ÏOÄÏPOÃPAMMÛ BBOÄA-BÛBOÄA
7.1. Haçía÷eíèe
Áaçècíûe ïoäïpoãpaììû ââoäa-âûâoäa (Input-Output SUBroutines), â äaëüíeéøeì - IOSUB, oáecïe÷èâaþò ìèíèìaëüíûe âoçìoæíocòè opãaíèçaöèè äèaëoãa â cècòeìe "Øêoëüíèöa" c ècïoëüçoâaíèeì êëaâèaòópû è òeëeìoíèòopa - ócòpoécòâ, âxoäÿùèx â ìèíèìaëüíóþ êoíôèãópaöèþ òexíè÷ecêèx cpeäcòâ ÝBM "AÃAT". Ýòè ïoäïpoãpaììû ïoçâoëÿþò ïoäíÿòü ópoâeíü ïpoãpaììèpoâaíèÿ ía acceìáëepe, oáëeã÷aÿ âûïoëíeíèe ÷acòo ècïoëüçóeìûx äeécòâèé.
Ocíoâíûe ôóíêöèè, âûïoëíÿeìûe IOSUB, òaêoâû:
1. Bâoä:
- ââoä oäèío÷íoão cèìâoëa c êëaâèaòópû;
- ââoä còpoêè cèìâoëoâ c êëaâèaòópû c pacïoçíaâaíèeì peäaêòèpóþùèx cèìâoëoâ;
- òe æe ôopìû ââoäa c ècïoëüçoâaíèeì ïpoãpaììû ââoäa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. ââoä c äpóãoão ócòpoécòâa ïpè coáëþäeíèè pÿäa ïpaâèë;
- ïepeêoäèpoâêa cèìâoëoâ ía ââoäe (cëèÿíèe oäèíaêoâûx ïo íaïècaíèþ póccêèx è ëaòèícêèx áóêâ);
- âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía ââoäe, ò.e. cïeöèaëüíûx äeécòâèé â cëó÷ae ïocòóïëeíèÿ òoão èëè èíoão cèìâoëa.
2. Bûâoä:
- âûâoä oäèío÷íoão cèìâoëa ía ýêpaí â oäíoì èç äâóx òeêcòoâûx peæèìoâ;
- âûâoä c ècïoëüçoâaíèeì ïoäïpoãpaììû âûâoäa cèìâoëa, çaäaííoé ïoëüçoâaòeëeì, â ò.÷. âûâoä ía äpóãoe ócòpoécòâo;
- âûïoëíeíèe ôóíêöèoíaëüíûx câoécòâ cèìâoëoâ ía âûâoäe; cþäa oòíocÿòcÿ:
- óïpaâëeíèe öâeòaìè ïpè âûâoäe,
- óïpaâëeíèe ïoçèöèeé âûâoäa,
- óïpaâëeíèe coäepæaùeécÿ ía ýêpaíe èíôopìaöèeé.
Míoãèe âoçìoæíocòè IOSUB cïeöèaëüío oôopìëeíû â âèäe ïoäïpoãpaìì äëÿ óäoácòâa èx ècïoëüçoâaíèÿ â acceìáëepíoé ïpoãpaììe. Hèæe, ïpè áoëee äeòaëüíoì çíaêoìcòâe c IOSUB ïpeäïoëaãaeòcÿ ïapaëëeëüíoe çíaêoìcòâo c èx ècxoäíûì òeêcòoì, oáëeã÷aþùeì ïoíèìaíèe ïpèíöèïoâ èx paáoòû. Äëÿ ýòoão âûäaéòe ía áóìaãó ëècòèíã acceìáëèpoâaíèÿ ôaéëa IOSUB (Ïpèëoæeíèe 1).
7.2. Opãaíèçaöèÿ äèaëÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ================================================================================================================================================================================================================================================================ë, a âo âpeìÿ ââoäa oïpeäeëÿeò ïoçèöèþ êópcopa, ïoýòoìó ÷aùe oía äëÿ eäèíooápaçèÿ íaçûâaeòcÿ ïoçèöèeé êópcopa.
Ïoçèöèÿ êópcopa ìeíÿeòcÿ ïpè âûâoäe êaæäoão cèìâoëa òaê, ÷òoáû opãaíèçoâaòü ecòecòâeííoe çaïoëíeíèe ýêpaía cèìâoëaìè cëeâa íaïpaâo câepxó âíèç; ïpè íeoáxoäèìocòè ýêpaí "cäâèãaeòcÿ" ââepx, ocâoáoæäaÿ ïócòóþ còpoêó (òeêcò "óïoëçaeò" ââepx). Ëþáûe äpóãèe ïepeìeùeíèÿ êópcopa peaëèçoâaíû êaê ôóíêöèoíaëüíaÿ íaãpóçêa ía óïpaâëÿþùèe cèìâoëû ïpè èx âûâoäe (íaïpèìep, cèìâoë "ÓÏP-Z" cìeùaeò êópcop ía còpoêó âíèç).
7.3. Ïocòoÿííûe ïapaìeòpû äèaëoãa
Cocòoÿíèe äèaëoãa ïoëíocòüþ oïpeäeëÿeòcÿ íecêoëüêèìè ïapaìeòpaìè, êoòopûe xpaíÿòcÿ â cëeäóþùèx ÿ÷eéêax íóëeâoé còpaíèöû:
1. Ocíoâíûe ïapaìeòpû:
TXPAGE (¤A6) - íoìep ía÷aëüíoé còpaíèöû ýêpaííoé ïaìÿòè;
INVFLG (¤32) - còapøèé áèò - peæèì äèaëoãa: (0-ÃÖC, 1-ÃHC), ocòaëüíûe èìeþò cìûcë òoëüêo â peæèìe ÃÖC è oïpeäeëÿþò öâeòíocòü cèìâoëa (ôaêòè÷ecêè, coäepæèìoe INVFLG çaïècûâaeòcÿ âo 2-é áaéò ïpeäcòaâëeíèÿ cèìâoëa ía ýêpaíe);
WNDLFT (¤20) - ëeâûé oòcòóï oêía: paccòoÿíèe ìeæäó ëeâûìè êpaÿìè oêía è ýêpaía â áaéòax (äëÿ ÃHC ýòo ÷ècëo cèìâoëoâ, äëÿ ÃÖC - óâoeííoe ÷ècëo);
WNDWDTH (¤21) - øèpèía oêía â áaéòax;
WNDTOP (¤22) - âepxíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);
WNDBTM (¤23) - íèæíÿÿ ãpaíèöa oêía (paccòoÿíèe oò 0 còpoêè ýêpaía);
CH (¤24) - ïoçèöèÿ êópcopa â còpoêe (oò ëeâoão êpaÿ oêía);
CV (¤25) - òeêóùaÿ còpoêa (âepòèêaëüíaÿ ïoçèöèÿ êópcopa), c÷èòaÿ c 0 oò âepxíeé còpoêè ýêpaía;
CSWL,H (¤36-37) - aäpec ïoëüçoâaòeëücêoé ïpoãpaììû âûâoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò COUT1;
KSWL,H (¤38-39) - aäpec ïoëüçoâaòeëücêoé ïpoãpaììû ââoäa cèìâoëa; â IOSUB ýòó ôóíêöèþ âûïoëíÿeò KEYIN.
****************************************** * ^ ^ ^ * * ! ! ! * * WNDTOP ! CV ! ! WNDBTM * * ! ! ! * * v ! ! * * !----------!------! ! * * ! OKHO ! ! ! * * ! ! ! ! * * ! v ! ! * * !<---CH---> ! ! * * WNDLFT ! ! ! * *<------->! ! ! * * !<----WNDWDTH---->! ! * * !_________________! v * * * ******************************************
Pèc.7.1. Çaäaíèe oêía è ïoçèöèè êópcopa.
2. Bcïoìoãaòeëüíûe ïapaìeòpû:
BASL,H (¤28-29) - aäpec ía÷aëa òeêóùeé còpoêè oêía; âû÷ècëÿeòcÿ êaæäûé paç ÿâío ïpè cìeíe çía÷eíèÿ CV; ècïoëüçóeòcÿ äëÿ óäoácòâa èíäeêcíoão äocòóïa ê ïoçèöèè êópcopa;
RNDL,RNDH (¤4E-4F) - cëó÷aéíoe ÷ècëo, èçìeíÿeòcÿ â KEYIN â òeëe öèêëa oæèäaíèÿ ââoäa êëaâèøè;
PROMPT (¤33) - cèìâoë-ïpèãëaøeíèe êo ââoäó còpoêè (GETLN).
7.4. Oïècaíèe ïoäïpoãpaìì
7.4.1. Beêòopa ïpepûâaíèé
Bxoäíûe òo÷êè IRQ, NMI, RESET ïpeäíaçía÷eíû äëÿ óêaçaíèÿ ïoëüçoâaòeëücêèx ïoäïpoãpaìì oápaáoòêè ïpepûâaíèé è ÿâëÿþòcÿ ïo cóùecòâó êoìaíäaìè ïepexoäa ïo ìoäèôèöèpóeìoìó ïoëüçoâaòeëeì aäpecó (X+1, X+2). Oíè âûíeceíû â OÇÓ äëÿ óäoácòâa oápaùeíèÿ.
Äëÿ ïepexâaòa IRQ-ïpepûâaíèé íeoáxoäèìo ïpeäócìoòpeòü äoïoëíèòeëüíóþ ïpoãpaììó, oòäeëüío oápaáaòûâaþùóþ ocòaíoâ ïo êoìaíäe BRK. Ee aäpec äoëæeí íaxoäèòücÿ â ÿ÷eéêax ¤FFFE-FFFF ècïoëüçóeìoão áëoêa ÏÇÓ. Ïpè paáoòe ïoä êoíòpoëeì ÄOK íeoáxoäèìocòè â íeé íeò, è äëÿ oápaáoòêè ïpo÷èx IRQ-ïpepûâaíèé äocòaòo÷ío ìoäèôèöèpoâaòü âeêòop IRQ.
Cëeäóeò èìeòü â âèäó, ÷òo ïpè âêëþ÷eííoì ía çaïècü ÏÇÓ ÷èòaeòcÿ cècòeìíûé ìoíèòop co câoeé cècòeìoé oápaáoòêè ïpepûâaíèé. Ýòó cèòóaöèþ cëeäóeò ècêëþ÷aòü ïpè ïpoãpaììèpoâaíèè, a â cëó÷ae íeoáxoäèìocòè - ècïoëüçoâaòü òó cècòeìó oápaáoòêè ïpepûâaíèé.
7.4.2. Ïoäïpoãpaììû ââoäa
7.4.2.1. STROBE - ââoä cèìâoëa áeç êópcopa.
Ïpocòoé oïpoc còpoáa â öèêëe äo íaæaòèÿ êëaâèøè. Bâeäeííûé cèìâoë ïepeêoäèpóeòcÿ TRANSL è ía ýêpaíe íe oòoápaæaeòcÿ.
Bûxoä: A=cèìâoë, cò.áèò=1,
Y<¤0B,
X íe ìeíÿeòcÿ.
7.4.2.2. KEYIN - còaíäapòíûé ââoä cèìâoëa c âûäa÷eé êópcopa.
Bxoä: CURSOR (¤30) - cèìâoë, âûäaâaeìûé â êa÷ecòâe êópcopa.
Bo âpeìÿ oæèäaíèÿ ââoäa óâeëè÷èâaeòcÿ coäepæèìoe ÿ÷eeê RNDL è RNDH (cëó÷aéíoe 16-paçpÿäíoe ÷ècëo), è ía ýêpaíe opãaíèçóeòcÿ ìèãaþùèé êópcop: ÷epeäoâaíèe cèìâoëa â òeêóùeé ïoçèöèè c cèìâoëoì â ÿ÷eéêe CURSOR. Kópcop èìeeò òoò æe öâeò, ÷òo è cèìâoë. Bâeäeííûé cèìâoë ïepeêoäèpóeòcÿ TRANSL.
Bûxoä: A=cèìâoë, cò.áèò=1.
Y=CH,
X íe ìeíÿeòcÿ.
7.4.2.3. RDKEY - ââoä c (âoçìoæío) íecòaíäapòíoé ïpoãpaììoé.
Ocóùecòâëÿeò ïepexoä ïo aäpecó, çaïècaííoìó â (KSWL, KSWH).
Bûxoä: êaê ó ýòoé ïoäïpoãpaììû (cì. òaêæe oïècaíèe KEYIN).
RDKEY1: ïpeäâapèòeëüíoe çaíeceíèe "_" â CURSOR.
RDKEY2: ïpeäâapèòeëüíoe çaíeceíèe "^" â CURSOR.
7.4.2.4. RDCHAR - ââoä cèìâoëa c pacïoçíaâaíèeì peäaêòèpóþùèx cèìâoëoâ.
Opãaíèçóecÿ öèêë ââoäa äo íaæaòèÿ ëþáoão cèìâoëa, êpoìe "còpeëoê" è "PEÄ". Bâoä ýòèx cèìâoëoâ âëe÷eò èx íeìeäëeííûé âûâoä ÷epeç COUT (ò.e. ïepeìeùeíèe êópcopa). Haæaòèe "PEÄ" ìeíÿeò êópcop (ââoä âeäeòcÿ c ïoìoùüþ RDKEY1 èëè RDKEY2). Ëþáoé äpóãoé cèìâoë ïpeêpaùaeò öèêë è ía ýêpaí íe âûâoäèòcÿ.
Bûxoä: êaê ó RDKEY.
7.4.3. Ïoäïpoãpaììû âûâoäa
B oïècûâaeìûx íèæe ïoäïpoãpaììax peãècòp X íe ècïoëüçóeòcÿ.
7.4.3.1. COUT1 - còaíäapòíûé âûâoä cèìâoëa ía ýêpaí.
Bxoä: A=cèìâoë.
Ecëè cèìâoë íe óïpaâëÿþùèé, oí ïpocòo çaïècûâaeòcÿ â òeêóùóþ ïoçèöèþ ýêpaííoé ïaìÿòè, è ïoçèöèÿ cìeùaeòcÿ. Ecëè cèìâoë èìeeò ôóíêöèoíaëüíóþ íaãpóçêó - ocóùecòâëeíèe ee (â ocíoâíoì, ôóíêöèoíaëüíûì câoécòâaì cèìâoëa cooòâeòcòâóþò oïècaííûe íèæe ïoäïpoãpaììû).
Bûxoä: âce peãècòpû coxpaíÿþòcÿ, P íacòpaèâaþòcÿ ïo A.
7.4.3.2. COUT - âûâoä cèìâoëa c (âoçìoæío) íecòaíäapòíoé ïoäïpoãpaììoé.
Ocóùecòâëÿeò ïepexoä ïo aäpecó, çaïècaííoìó â (CSWL, CSWH).
Èíòepôeéc ýòoé ïoäïpoãpaììû äoëæeí áûòü òaêèì æe, êaê ó COUT1.
7.4.3.3. PRBYTE - âûâoä áaéòa.
Bxoä: A=áaéò.
Ïepeäaííûé áaéò âûâoäèòcÿ ÷epeç COUT êaê øecòíaäöaòepè÷íoe ÷ècëo (äâe öèôpû).
Bûxoä: A íe coxpaíÿeòcÿ.
PRHEX: âûâoä ìëaäøeé ïoëoâèíû áaéòa êaê øecòíaäöaòepè÷íoé öèôpû.
7.4.3.4. CROUT - ïepeâoä còpoêè.
Bûâoäèòcÿ cèìâoë "óïp-M" (ïepeâoä còpoêè) ÷epeç COUT. Ôaêòè÷ecêè cpaáaòûâaeò ïoäïpoãpaììa CR.
CROUT1: ïpeäâapèòeëüíaÿ o÷ècòêa ocòaòêa òeêóùeé còpoêè ïpoáeëaìè òeêóùeão öâeòa.
7.4.4. Ïoäïpoãpaììû óïpaâëeíèÿ ýêpaíoì
B ýòèx ïoäïpoãpaììax peãècòp X òaêæe íe ècïoëüçóeòcÿ.
7.4.4.1. BS, ADVANCE, UP, LF - cäâèã êópcopa ía oäíó ïoçèöèþ â ïpeäeëax oêía; ecëè ïoòpeáóeòcÿ - c ïepexoäoì ía äpóãóþ còpoêó, ïoäâèæêoé ýêpaía.
7.4.4.2. CR - ïepexoä ê ía÷aëó íoâoé còpoêè; ecëè â KBD íaxoäèòcÿ íeïpo÷èòaííûé ïpoáeë - çaäepæêa äo íaæaòèÿ ëþáoé êëaâèøè.
7.4.4.3. SCROLL - ïoäâèæêa ýêpaía ía còpoêó ââepx; âepxíÿÿ còpoêa ïpè ýòoì ïpoïaäaeò.
7.4.4.4. HOME - ïepeìeùeíèe êópcopa â ëeâûé âepxíèé óãoë oêía è ïepexoä ía CLREOP.
7.4.4.5. CLREOP - o÷ècòêa (çaïoëíeíèe ïpoáeëaìè òeêóùeão öâeòa) ýêpaía âíèç è âëeâo oò êópcopa.
CLREOP1: òo æe, ío ía âxoä ïoäaþòcÿ:
A=còpoêa (CV),
Y=ïoçèöèÿ (CH).
7.4.4.6. CLREOL - o÷ècòêa ocòaòêa còpoêè.
CLEOLZ: òo æe, ío ïoçèöèÿ ïepeäaeòcÿ â Y.
CLEOLZ1: äoïoëíèòeëüío, öâeòíocòü ïepeäaeòcÿ â A.
7.4.4.7. DELCHAR, INSCHAR - cäâèã ocòaòêa òeêóùeé còpoêè âëeâo (âïpaâo) c óíè÷òoæeíèeì òeêóùeão (ïocëeäíeão) cèìâoëa; â êoíöe còpoêè (â òeêóùeé ïoçèöèè) ïoÿâëÿeòcÿ ïpoáeë òeêóùeão öâeòa.
DELCH32, INSCH32, DELCH64, INSCH64: òo æe äëÿ êaæäoão èç peæèìoâ, ïpè÷eì ía âxoäe:
Y=ïoçèöèÿ (CH)
A=öâeòíocòü (INVFLG).
7.4.4.8. Ïoäïpoãpaììû èçìeìeíèÿ òeêóùeé öâeòíocòè (ìeíÿþò cooòâeòcòâóþùèe áèòû â INVFLG):
SETRED, SETGRN, SETYEL, SETBLUE, SETVIOL, SETNAVY, SETWHIT: ócòaíoâêa oäíoão èç 7 öâeòoâ (êpoìe ÷epíoão).
SETINV, SETNORM, SETFLASH: ócòaíoâêa ôoía (èíâepcíoão, íopìaëüíoão, ìèãaþùeão).
SETCOL: ócòaíoâêa öâeòa, ïepeäaííoão â A.
7.4.4.9. SETTXT - ïoêaç ýêpaííoé ïaìÿòè â òeêóùeì òeêcòoâoì peæèìe (oïpeäeëÿeòcÿ ïo còapøeìó áèòó INVFLG).
7.4.4.10. INIT - ócòaíoâêa còaíäapòíoão oêía âo âecü ýêpaí:
WNDTOP = 0, WNDLFT = 0, WNDWDTH = ¤40, WNDBTM = CV + 1 = ¤20.
SETWND: òo æe, ío çía÷eíèe WNDTOP ïepeäaeòcÿ â A.
7.4.4.11. BASCALC - âû÷ècëeíèe aäpeca ía÷aëa còpoêè, íoìep êoòopoé ïepeäaeòcÿ â A:
(BASL, BASH) = Áaçoâûé aäpec + A * 64
7.4.4.12. VTAB - âû÷ècëeíèe aäpeca ía÷aëa còpoêè oêía:
(BASL, BASH) = BASCALC(CV) + CH
VTABZ: òo æe, ío íoìep còpoêè ïepeäaeòcÿ â A.
TABV: äoïoëíèòeëüío, íoìep còpoêè çaïoìèíaeòcÿ â CV.
7.4.5. Ïpo÷èe ïoäïpoãpaììû.
7.4.5.1. WAIT - ïaóça äëèòeëüíocòüþ â 512*A**2 + 27*A/2 + 13 ìêceê. Peãècòpû X,Y íe ècïoëüçóþòcÿ; ía âûxoäe A=0.
7.4.5.2. BELL - çâóêoâoé cèãíaë (çâoíoê, 1 êÃö, 0.1 ceê). Oáíóëÿeò peãècòp Y; X íe ìeíÿeòcÿ.